Чому SSD псуються? Причини поломки SSD-дисків.


Чому SSD псуються?



SSD-накопичувачі (твердотільники), які зберігають дані в мікросхемах Flash-NAND, швидші та ефективніші (принаймні так стверджують виробники та продавці) ніж жорсткі диски. Вони тихі та споживають менше електроенергії. Оскільки зберігають дані на інтегральних мікросхемах, їм не потрібен складний, точний та схильний до збоїв механізм. Стійкість твердотільників до механічнмх пошкоджень стала підставою маркетингової догми про їх надійність. Падіння цін за останні роки зробило SSD дуже популярними і в той же час реальність жорстко розвіяла міф про їх безвідмовність.
Теоретично можна сконструювати електронні пристрої здатні безвідмовно працювати кілька, а навіть кілька десатків років, але на практиці чимало разів зустрічаємо комп'ютерні компоненти, які виходять з ладу вже в перший день роботи. І дуже часто це саме тверлотільник відмовляється співпрацювати вже на етапі установки операційної системи. Тож чому у твердотільних накопичувачів такий високий відсоток поломок і наскільки їм можна довіряти як носіям даних?



Зберігання даних на SSD



За зберігання даних у напівпровідникових накопичувачах (не лише твердотільниках, але й флешках, картах пам'яті та мікросхемах пам'яті вбудованих в таки пристрої, як наприклад смартфони) відповідають модифіковані польові транзистори NPN. Такий транзистор складається з трьох електродів - ділянок напівпровідника. Двох багатьох електронами (і, отже негативно заряджених, звідси позначення "N") - витоку та стоку, розділених областю бідною електронами (позитивною - звідси літера "P"). У цих транзисторах електрони є носіями відповідальними за потік струму. Між витоком та стоком є електрично ізольований затвор, який викорисовується для керування транзистором.
Існують також транзистори PNP, у яких витік та стік заряджені позитивно, а затвор - негативно. Однак ці види транзисторів не використовуються в мікросхемах типу флеш. Польові транзистори називають однополярними (уніполярними), тому, що струм в них переноситься тільки основними носіями. Для транзисторів NPN це електрони, а для PNP т. зв. дірки. Окрім уніполярних транзисторів є також біполярні, в яких струм переноситься як основними, так і неосновними носіями. Їх можна зустрити в багатьох інших застосуваннях в електронних схемах.
В однополярному транзисторі під дією електричного поля (тому транзистор називають "польовим") створюється канал званий каналом N, який дозволяє електроном протікати між витоком, а стоком. Якщо подати напругу на затвор, канал N закривається і струм між витоком, а стоком перестає текти. Транзистори, в яких канал N відкритий і закривається, коли на затвор подається напруга, називаються транзисторами з вбудованим каналом. В електроніці ми також зустрічаємо транзистори з індукованим каналом, у яких подання напруги на затвор призводить до відкриття каналу.
Щоб використовувати польовий транзистор до енергонезалежного зберігання даних, необхідно було модифікувати затвор, який був поділений на контрольний затвор і плаваючий затвор. Плаваючий затвор є найважливішою частиною транзистора з точки зору зберігання інформації. Це електрично ізольована зона, в якій може накопичуватися електричний заряд, який залишається після відключення пристрою від джерела живлення.
Якщо ми накопичимо електричний заряд у плаваючому затворі, ми досягнемо ефекту закриття каналу N так само, як якщо б ми подали напругу на затвор. В свою чергу, якщо плаваючий затвор буде порожній, транзистор буде відкритим і струм може вільно протікати між витоком та стоком. Тому зазвичай порожній плаваючий затвор інтерпретується як логічну одиницю, а зараджений, що замикає канал N, як логічний нуль.



Адресування даних у SSD



З точки зору користувача, ми звертаємось до даних у логічних структурах файлових систем. Щодня ми використовуємо файли, каталоги та розділи. Якщо ми трохі цікавимось комп'ютерами, ми також знаємо про кластери та сектори. В свою чергу, мікросхеми NAND хіба не цікавляться комп'ютерами, бо навіть не мають уявлення про сектори.
Сектори LBA (англ. Logical Block Addressing) використовуються для зв'язку між різними пристроями та програмним забезпеченням. Твердотільники приймають команди для виконання певних операцій над вказаними алресами LBA та повертають їх на зовнішній інтерфейс для сумісності з протоколами зв'язку, як наприклад протокол ATA. Однак внутрішній зв'язок між контролером та мікросхемами пам'яті здійснюється стосовно до стандарту ONFI.
Відповідно до цього стандарту, дані адресуються сторінками та блоками. Сторінка, це мінімальна одиниця читання та запису (програмування). Її розмір відповідає розміру реєстру сторінки і на даний момент досягає близко 16 кБайт. Так, це еквівалент 32 512-байтових секторів LBA, кожен з яких контролер вирізає з відповідної сторінки на команду комп'ютера. Крім секторів користувача, сторінка містіть у собі певну надлишкову інформацію, яка зберігає різні типи даних потрібних для коректної роботи носія. Структура впорядкування в сторінці даних користувача та надлишкової інформації називається форматом сторінки. Звідки контролер знає, де знаходиться шуканий сектор? За це відповідає підсистема прошарку трансляції флеш (англ. Flash Translation Layer - FTL), до якої ми повернемось ще декілька разів.
Другою одиницєю адресування є блок, що зміщує від декількох до кількох сотень сторінок. Це мінімальна одиниця стирання даних. На відміну від магнітних носіїв даних, мікросхеми типу флеш не можуть безпосередньо перезаписувати попередній вміст. Ми можемо запрограмувати лише транзистори, в яких плаваючі затвори порожні, що вимагає попереднього видалення з них електронів. Тому нові або зовсім порожні мікросхеми флеш при зчитанні програматором видають значення 0хFF. Ці значення віддають також порожні блоки та незапрограмовані кінцівки сторінок, якщо такі невикористані області у форматі сторінки істують.



Основні операції та їх вплив на зніс мікросхем Flash-NAND



Оскільки у випадку мікросхем флеш ми не маємо фізичної можливості безпосередньо перезаписати наявні дані, ми можемо лише записати (запрограмувати) порожні плаваючі затвори транзисторів. Тому накопичувачам, які використовують мікросхеми флеш, потрібно підтримувати три основні операції: запису (програмування) потрібного вмісту, його читання та видалення застарілих даних. Редагування даних, з технічного боку, включає зчитання даних у буфер, зміну вмісту буфера та його збереження у фізично іншому місці.
Тут ми знову торкаємось прошарку трансляції логічного адресування у фізичне, який реєструє перенесення адрес секторів LBA в інше фізичне сторінки та призначає блоки, де вони були початково розташуванні, до скасування. Стерті блоки, яким пізніше будуть призначені відповідні нові адреси LBA, можна використовувати для зберігання чергових даних. Інформація про поточне розташування адрес LBA у фізичних одиницях адресування зберігається в таблицях трансляції розміщених у служебних блоках пам'яті Flash-NAND.
Мікросхеми типу флеш розроблені таким чином, що поступово зношуються. Це пов'язвно зі способам розміщення електронів у плаваючих затворах під час програмування та видаляння їх під час стирання. Оскільки плаваючий затвор електрично відокремлений від решти транзистора ізолятором, якщо ми хочемо помістити в нього електрони, або їх видалити, нам потрібно подолати потенціяльний бар'єр створений ізолятором. Це завдання зазвичай виконується за допомогою відомого з квантової механіки явища тунелювання Фаулера-Нордхейма.
Тунелювання Фаулера-Нордхейма використовує хвильові властивості електронів для подолання потенціяльного бар'єру, але вимагає вищої напругі, яка в різних мікросхемах досягає 10-20 В. Ця операція пов'язана з втратами енергії, що розсіюються у вигляді тепла електричної роботи (тепло Джоуля, що ми найкраще знаємо з електричних обігрівачів) і наватнажує ізолятор. Тому операції запису та стирання з часом призводять до пошкодження ізолятора. Зношений ізолятор втрачає здатність утримувати заряд плавяючого затвору, що спричиняє витік електронів, а отже, й витік даних.
Зчитування полягяє на подачи напруги між витоком, а стоком. В цей спосіб ми перевіраємо чи канал N закритий, чи відкритий, а посередньо, чи плаваючий затвор заряджений, чи ні. Якщо транзистор відкритий, контролер інтерпретує його як логічну одиницю, а якщо закритий - як логічний нуль. Операція читання не навантажує ізолятор плаваючого затвора, тому й не впливає на знос мікросхеми. Ось, чому стійкість мікросхем Flash-NAND вимірується кількістю циклів запису та стирання.



Збільшуємо кількість бітів, що зберігаються в транзисторі.



Мікросхеми Flash-NAND на початку свого існування були дуже дорогими, тому не дивно, що виробники шукали спосіб покращити співвідношення ємності та ціни. Одним зі способів досягнення цієї мети було розміщення двох бітів даних в одному транзисторі. Подвоєння ємності мікросхем стало можливе шляхом заряджання плаваючого затвора до певного рівня, що викликає контрольоване часткове закриття каналу N. Щоб мати можливість зберігати в одному транзисторі 2 біти, потрібно розрізняти 4 логічні стани (00, 01, 10 та 11), а отже 4 рівні заряду плаваючого затвора.
Цілком природно, що ця ідея дуже сподобалась бухгальтерам і вони очікували, що інженери розвіватимуть цю технологію. Але це не було так просто. Розміщення третього біта в транзисторі більше не подвоює ємність мікросхеми, а лише збільшує її на половину. А що відбувається з рівнями заряду плаваючого затвора? Так, нам потрібно подвоїти їх кількість. Якщо ми хотімо помістити три біти в одному транзисторі, нам необхідно розрізняти 8 рівнів заряду, що відповідають логіним значенням від 000 до 111. І, звичайно, додавання кожного наступного біта до транзистора призводить до збільшення ємності мікросхеми в усе меншій мірі, в той же час, коли кількість необхідних рівнів заряду плаваючого затвора зростає експоненціально.
Більша кількість необхідних рівнів напруги спричиняє погіршення співвідношення сигнал/шум, що сприяє помилкам читання. Операція програмування також повинна виконуватися все точніше, оскільки під час запису теж можуть винікати бітові помилки. Введення електронів у плаваючі затвори за допомогою квантової механіки не дозволяє отримати потрібну точність. Щонайбільше, можна зарядити затвори приблизно необхідною кількістю електронів. Це означає, що чимало транзисторів містять заряди подібні до сусідніх логічних станів, а деяки з них представляють стани відмінні від запланованих.
Теоретично можна було б реагувати на кожну помилку запису повторенням операції, але на практиці це неможливо. Під час програмування сторінки, що містіть тисячі байтів, тобто десятки тисяч бітів, дуже ймовірно, що при повторному записі знову винікнуть деякі помилки. Таким чином можна не дочекати успішного завершення операції. Крім цього, не забуваймо, що кожен запис та кожне стирання зносить мікросхему пам'яті, що наближає нас до виходу з ладу накопичувача. Тому, якщо кількість помилок запису достаточно мала, треба відмовитися від прагнення досконалості та покластися на математику кодів виправлення помилок ECC (англ. Error Correction Code).
Коли на ринку з'явилися перші мікросхеми, що містять два біти в одному транзисторі, старші мікросхеми, що містять лише один біт даних на транзистор, отримали назву SLC (англ. Single Level Cell), а нові - MLC (англ. Multi Level Cell). Наступні мікросхеми, що зберігають три біти в кожному транзисторі, це TLC (англ. Triple Level Cell). Найновіші нине доступні мікросхеми Flash-NAND мають позначення QLC (англ. Quad Level Cell) і містять по чотири біти на транзистор. І, оскільки позначення MLC інколи також використовується в загальному сенсі для названня всіх типів пам'яті, що зберігають більш, ніж один біт даних на транзистор, деякі менш чесні продавці використовують цю абревіатуру для позначення також гірших мікросхем типу TLC та QLC.
Розміщення чергових бітів інформації в транзисторах не тільки погіршує співвідношення сигнал/шум, але також негативно впливає на продуктивність та стійкість мікросхем типу флеш. Зчитування вимагає порівнання напруги, при якої транзистор відкривається, з кількома еталонними рівнями, що забірає час. Також програмування здійснюється в кілька етапів, що призводить не тільки до збільшення часу виконання операції, але теж і до збільшення навантаження на ізолятор плаваючого затвора. Як наслідок, ізолятор деградує швидше, а стійкість мікросхем, яка для SLC перевищує 100.000 циклів програмування/стирання, у випадку пам'яті MLC впадає до все ще прийнятного рівня 10-20 тисяч операції запису/стирання. Для мікросхем TLC заявлені виробніками значення зазвичай знаходяться в межах 3-5 тисяч, але для найновіших пам'яті цього типу, це тільки 1500 циклів запису/стирання. Ще гірша ситуація у випадку мікросхем QLC, яких типова стійкість, це близько 600 операції програмування/стирання.
Через різке зменшення стійкості та довговічності мікросхем Flash-NAND, виробники вдаються до маркетингового трюку і заміст інформації про ресурс циклів програмування/стирання, подають параметр TBW (англ. Total Bytes Written - загальна кількість записаних байтів). Інформація про те, що твердотільник об'ємом 1 ТБайт має TBW 1,5 ПБайт безсумівно викликає у користувачів набагато більшу довіру, ніж інформація про ресурс півтори тисячи циклів програмування/стирання. Але ми можемо дуже просто розрахувати стійкість мікросхеми поділівші параметр TBW на ємність носія. Не забуваймо при цьому, що мінімальною одиницєю запису є сторінка, типово розміру 8 або 16 кБайт, тому ми втрачаємо ресурс циклів програмування - стирання швидше, ніж це здається на перший погляд.
Незважаючи на проблеми пов'язані з погіршенням співвідношення сигнал/шум, зростанням кількості бітових помилок, та зніженням ресурса циклів програмування/стирання, деяки виробники все таки думають про впровадження мікросхем пам'яті, що зміщують 5 бітів у кожному транзисторі, які мають позначатися символом PLC. Мікросхеми PLC мають розрізняти 25 = 32 рівні заряду. При номінальній напрузі 3,3 В це означатиме необхідність розрізняти сусідні логічні стани кожні 0,1 В. При цьому важко очікувати, що ресурс операції програмування/стирання таких мікросхем перевищить 100 циклів. Дла перезаписувального носія це зовсім небагато.



Зменшуємо розмір транзистора



Це відбувається з самого початку розвитку сучасної електроніки. Виробники намагалися зменшувати розміри компонентів ще до появи інтегральних мікросхем. Зменшення літографічного процесу дозволяє виробляти дедалі дешевші та менші мікросхеми які споживають менш енергії та виділяють менш тепла, а в той же час більш продуктивні та з вищим ступенем інтеграції. Цей процес стосується також і мікросхем типу флеш. Якщо ми зменшуємо розмір транзисторів, ми зможемо змістіти їх більше в корпусі мікросхеми зі стандаризованими розмірами й, таким чином, збільшити її ємність.
Але такий процес не можна розвівати до нескінченості. Тут ми стикаємося з обмеженнями у вигляді фізичних розмірів атомів. Наприклад атом кремнію (Si) має діаметр менше чверті нанометра. У випадку транзисторів з розмірами в декілька нанометрів, дуже важко перенести їх виконання з лабораторій в заводські умови масового виробництва.
Ще однією перешкодою для зменшення розміру транзисторів є необхідність використання світла з дедалі коротшими довжинами хвиль у процесі літографії. Вже зараз потрібно використовувати діапазони довжин хвиль, які ледве містяться в межах екстремального ультрафіолету. Якщо транзистори будуть зменшені ще більше, необхідно буде використовувати рентґенівське випромінювання. Використання все більш високих частот хвиль також вимагає більш чистого середовища. Тому виробничі процеси з використанням глибокого ультрафіолету проводяться в умовах вакууму.
Цю проблему відчувають також виробники процесорів, яким все важче відповідати потребам ринку через труднощи у виробництві та велику кількість бракованих мікросхем. Закон Мура, який десятиліттями стверджував, що кількість транзисторів у мікросхемі подвоюється кожні півтора року, нещодавно був змінений. Зараз вважається, що кількість транзисторів у мікросхемі подвоюється кожні два роки. Не виключено, що незабаром закон Мура взагалі перестане працювати.
Зменшення розміру транзистора також означає зменшення розміру його компонентів, включаючи товщину шару ізолятора та об'єм плаваючого затвора. Товщина ізолятора впливає на його стійкість та ефективність утримання заряду накопиченого в плаваючому затворі. Це критичні чинники для надійного зберігання даних. Занадто тонкий шар ізолятора не тільки легче деградує під час операцій стирання та запису, але також дозволяє окремим електронам витікати, що, в свою чергу, може призвести до зміни стану заряду до такої міри, що під час читання змісту він буде інтерпретуваний, як інший логічний стан, ніж записаний.
Об'єм плаваючого затвора, а точніше - кількість атомів, які він містіть, також має значний вплив на зберігання інформації. Негативно заряджені електрони відштовхуються один від одного. Це означає, що, незважаючи на їх невеликі розміри, їх неможливо вмістити в плаваючий затвор у великих кількостях. Електрони треба розміщати на зовнішніх валентних оболонках атомів, де, для більшості атомів, зовнішня валентна оболонка може помістіти максимально 8 електронів. Це обмеження, яке випливає з квантової механіки - принципу Паулі, який стверджує, що кожна орбіталь може помістіти максимально два електрони. Кремній, з якого виготовлені транзистори, має 4 таких орбіталі на зовнішній валентній оболонці.
Рекомендована товщина шару ізолятора для надійного та безпечного зберігання даних становить приблизно 4 нм. У випадку мікросхем виготовлених в процесі літографії 15 нм, вона падає до приблизно 2 нм. Кількість електронів, які можуть зберігатись у плаваючому затворі, також зменшується з декількох до приблизно однієї тисячі. На практиці це означає, що в найновіших мікросхемах типу TLC та QLC витік лише декількох десатків електронів викликає бітову помилку при зчитуванні логічного стану. При тому електрони витікають тим легче, чим тонший ізолятор. Тому не дивно, що найменш стійки мікросхеми, які виготовлені за допомогою літографії нижче 20 нм та одночасно зберігають три або чотири біти в одному транзисторі.



3D-NAND.



Ще один спосіб збільшити ємність мікросхем Flash-NAND - це розмістіти транзистори в багато шарів один над одним. Завдяки цьому можна в рази збільшити обсяг пам'яті без збільшення поверхні мікросхеми. Це рішення з'явилося порівняно недавно, хоча може здатись, що сама ідея настільки тривіальна, що мала б з'явитися дуже давно. Що ж, це рішення також не позбавлене недоліків.
Перша проблема, це індукція між сусідними транзисторами. Це явище існує также й у двовимірних мікросхемах, де теж спричиняє паразитні електроємності та призводить до ризику бітових помилок. Що відбувається, коли в мікросхемі з'являються чергові шари транзисторів? Окрім індукції від зарядів накопичених в сусідніх транзисторах, з'являється додаткова індукція від зарядів, що розташовані в нижніх та верхніх шарах.
Іншою проблемою є згадане раніше тепло Джоуля, шо виділяється особливо під час операцій стирання та запису. Ми вже знаємо, що це спірає деградації ізоляторів плаваючих затворів. Тому це тепло слід якнайшвидше віддати до оточення. Швидкість віддавання тепла залежить від багатьох чинників, з яких найважливішим є поверхня його віддавання. Ось, чому найкращі випромінювачи (радіатори) мають багато тонких виступів, які забезпечують велику поверхню терловіддачи.
Але за допомогою випромінювача ми можемо тільки збільшити швидкість тепловіддачи з поверхні мікросхеми. У випадку багатошарових мікросхем, суть проблеми полягає в тому, щоб запобігти накопиченню тепла всередині мікросхеми. Належне відведення тепла, що накопичується між шарами мікросхеми, набагато складніше, ніж його видалення з поверхні.
Обидві проблеми зростають зі збільшенням кількості шарів та зменшенням відстані між зарядами. Електричне поле зменшується з квадратом відстані, тому чим менші відстані між транзисторами, тим сильніша індукційна взаємодія між накопиченими в них зарядами. Вплив тепла також більш руйнішивий, коли розмір об'єктів розміщених в кремінієвій структурі мікросхеми зменшується.



Найчастіший механізм виходу з ладу напівпровідникових накопичувачів.



Ми вже знаємо, що мікросхеми Flash-NAND під час роботи зношуються, що є основною причиною бітових помилок. Як правило, коли кількість бітових помилок перевищує можливість їх виправлення кодами ECC, даний блок вважається пошкодженим, записується в список дефектів та виключається з подальшої експлуатації. До недавнього часу алгоритми управління дефектами були настільки ефективними, що практично не бувало випадків, у яких попереджувальні сигнали, таки, як проблеми з читанням та пошкодження файлів або логічних структур дозволяли б передбачити, що наближається збій накопичувача.
Й все-таки, збої твердотільників зазвичай виникають раптово. Комп'ютер перевантажується або післья запуску не завантажується операційна система. В таких випадках діагностика часто показує, що БІОС не бачить SSD або розпізнає його під якимось дивним названням та з нульовою або підозріло низькою ємністю. Це пов'язано з тим, що зношуються та підлягають пошкодженням не лише блоки, що зберігають дані користувача, але теж блоки, що містять модулі прошивки, як наприклад таблиці трансляції адрес LBA на фізичні.
Якщо проблема бітових помилок стосується записів у служебних блоках, неможливо правильно призначити логічні адреси відповідним фізичним адресам, що унеможливює контролеру збудувати правильний образ логічних структур та надати доступ до файлів користувача. Якщо виникають помилки в цій, або будь якій іншій важливій частині прошивки, контролер відключає доступ до мікросхем Flash-NAND. Замість моделі накопичувача, у відповідь на запит БІОС на представлення ідентифікатора, твердотільник залишається в зайнятому стані (висить) або віддає т. зв. технологічний паспорт (наприклад SATAFIRM S11), а замість ємності всього носія, любить показати ємність якогось доступного буфера.